The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for providing a data storage mechanism in which the storage system, or storage device itself, determines the write location for the data.
In various types of storage devices, including hard disk drives, magnetic tape storage devices, and the like, data is accessed, in an arbitrary manner, as blocks of data, i.e. a sequence of bytes or bits of data having a predetermined length or block size. When writing such a block of data to a storage medium, e.g., a hard disk, magnetic tape, or the like, of the storage device, a host system typically provides a block address for specifying the location on the storage device where the data is to be written, along with the block of data itself. The result of executing the write operation is sent back from the storage device to the host system. In many cases, the completion of the execution of the write operation is sent back to the host system at a time when the data is stored into a buffer of the storage device even though the actual writing into the storage medium has not yet been completed. The block locations where the data is to be written in the storage device are determined by the host system, i.e. on the host side, in advance of the write request being sent to the storage device. In some cases, readdressing operations may be performed inside a storage medium if, for example, there is a defective region in the storage medium, however the address space for readdressing is severely limited.
In storage devices where the amount of time necessary to move the read/write mechanisms, e.g., the read/write head, from a current block location to a next block location being access is very short, such as in the case of a hard disk drive, the performance degradation caused by waiting until the completion of movement of the read/write mechanism, e.g., the seek operation or locate operation, is not severe. This is because the difference between the minimum movement time (e.g., seek time) and the maximum movement time (e.g., seek time) is relatively small. Thus, the movement time for any particular access operation may be considered uniform across the storage device. If a buffer is used in the storage system, since time for waiting until the completion of movement is short, it is rare that the buffers become full, thus causing buffering of additional data for read/write access operations to be unavailable. Since this is rare due to the access speeds of such hard disk drives, modern technology has adopted the methodology of sending an address and the corresponding data at the same time when a write request is made to the storage system from a host system.
However, when a block access operation is performed on a storage device in which the movement time for the read/write mechanism, e.g., the seek or locate operation, to position itself relative to a location on the storage medium is longer than an acceptable amount of time for waiting for the block access operation to complete, it becomes necessary to take movement time of the read/write mechanism into consideration when addressing the storage medium. That is, when the difference between the minimum movement time (e.g., seek time) and the maximum movement time (e.g., seek time) is relatively large, then the movement time may affect the buffering ability for data being written to, or read from, the storage medium. This may be especially a problem with regard to magnetic tape media and storage devices, for example.